package com.ysd.service;

import java.util.List;
import java.util.Optional;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.ysd.entity.Modules;
import com.ysd.entity.Roles;

public interface RolesService {
	/**
	 * 多条件分页查询所有角色
	 * @param r
	 * @param pageable
	 * @return
	 */
	Page<Roles> findAllRoles(Roles r,Pageable pageable);
	/**
	 * 删除角色
	 * @param roles
	 */
	void deleteRoles(Roles roles);
	/**
	 * 添加修改角色
	 * @param s
	 * @return
	 */
	Roles addAndUpdate(Roles s);
	
	//----------------------------------------------------

	/**
	 * 获取全部角色信息
	 * @return
	 */
	List<Roles> findAllRoles();
	/**
	 * 根据角色id批量获取角色信息
	 * @param roleids
	 * @return
	 */
	List<Roles> findRolesById(List<String> roleids);
	
	//---------------------首页右侧功能菜单-----------------------
	/**
	 * 获取首页右侧功能菜单
	 * @return
	 */
	List<Modules> functionMenu(List<String> roleids);
	/**
	 * 根据角色里的功能模块集合获取所有功能模块
	 * @param roles 角色集合
	 * @return
	 */
	List<Modules> getModulesByRoles(List<Roles> roles);
	/**
	 * 判断某个功能模块是否存在集合中
	 * @param module
	 * @param modules
	 * @return
	 */
	boolean existsModule(Modules module,List<Modules> modules);
	//--------------------------------------------
	
	
	
	
	/**
	 * 動態查詢所有角色
	 * @param r
	 * @param pageable
	 * @return
	 */
  Page<Roles> findBySnamePage(Roles r,Pageable pageable);
	/**
	 * 添加角色
	 * @param r
	 * @return
	 */
	Roles addRoles(Roles r);
	/**
	 * 修改角色
	 * @param r
	 * @return
	 */
	Roles updateRoles(Roles r);
	/**
	 * 根據實體參數刪除角色
	 * @param roleid
	 */
	void deleteRoles(String roleid);
	
	//List<Roles>  findAllRoles();
	
	
	
	/**
	 * 给用户添加角色
	 * @param userid
	 * @param roleid
	 */
	void saveUserrole(String userid, String roleid);
	
	/**
	 * 给用户删除角色
	 * @param userid
	 * @param roleid
	 */
	
	void delUserrole(String userid, String roleid);
	/**
	 * 根据角色查询模块
	 */
	Optional<Roles> ByidfindModules(String Id);
}
